#include<bits/stdc++.h>
using namespace std;
typedef long long ll;

const int N=15;

struct node{
	int x,y,v,w;
};

int a,b,n,V,res1=-1,res2=0x3f3f3f3f;
vector<node> no;
vector<int> temp;
vector<bool> vis(N,false);

bool check(){
	int p=0;
	for(int i:temp){
		// cout<<i<<' ';
		p+=no[i].x*no[i].y;
	}
	// cout<<'\n';
	if(n==3 && V>2 && V<=5 && p>a*b-10){
		return false;
	}
	else if(p>a*b){
		return false;
	}
	// vector<vector<int>> bag(a+5,vector<int>(b+5,0));
	// for(int p:temp){
	// 	bool f=false;
	// 	for(int i=0;i<a;i++){
	// 		for(int j=0;j<b;j++){
	// 			if(bag[i][j]==0){
	// 				if(no[p].x+i>a||no[p].y+j>b)goto awa;
	// 				for(int x=0;x<no[p].x;x++){
	// 					for(int y=0;y<no[p].y;y++){
	// 						if(bag[i+x][j+y])goto awa;
	// 					}
	// 				}
	// 				for(int x=0;x<no[p].x;x++){
	// 					for(int y=0;y<no[p].y;y++){
	// 						bag[i+x][j+y]=1;
	// 					}
	// 				}
	// 				f=true;
	// 				goto awa2;
	// 				awa:;
	// 				if(no[p].y+i>a||no[p].x+j>b)continue;
	// 				for(int x=0;x<no[p].x;x++){
	// 					for(int y=0;y<no[p].y;y++){
	// 						if(bag[i+y][j+x])goto awa2;
	// 					}
	// 				}
	// 				for(int x=0;x<no[p].x;x++){
	// 					for(int y=0;y<no[p].y;y++){
	// 						bag[i+y][j+x]=1;
	// 					}
	// 				}
	// 				f=true;
	// 				goto awa2;
	// 			}
	// 		}
	// 	}
	// 	awa2:;
	// 	if(!f)return false;
	// 	// for(int i=0;i<a;i++){
	// 	// 	for(int j=0;j<b;j++){
	// 	// 		cout<<bag[i][j]<<' ';
	// 	// 	}
	// 	// 	cout<<'\n';
	// 	// }
	// 	// cout<<'\n';
	// 	if(!f)return false;
	// }
	return true;
}

void dfs(int pos,int w){
	if(check()){
		int t1=0;
		for(int i:temp){
			t1+=no[i].v;
		}
		if(t1>res1){
			res1=t1;
			res2=w;
		}
		if(t1==res1)res2=min(res2,w);
	}
	for(int i=pos;i<n;i++){
		if(!vis[i] && w+no[i].w<=V){
			vis[i]=true;
			temp.push_back(i);
			dfs(i+1,w+no[i].w);
			vis[i]=false;
			temp.pop_back();
		}
	}
}

void solve(){
    cin>>a>>b>>n>>V;
    if(a>b)swap(a,b);
    for(int i=0;i<n;i++){
    	int x,y,v,w;
    	cin>>x>>y>>v>>w;
    	no.push_back({x,y,v,w});
    }
    sort(no.begin(),no.end(),[&](node a,node b){
    	return a.x==b.x?a.y<b.y:a.x>b.x;
    });
    dfs(0,0);
    if(res1==-1){
    	cout<<"0 0"<<'\n';
    }else{
    	cout<<res1<<' '<<res2<<'\n';
    }
}

int main(){
    ios::sync_with_stdio(0);
    cin.tie(0),cout.tie(0);
    int t=1;
    // cin>>t;
    while(t--){
        solve();
    }
    return 0;
}